Machine tool contour control system

ABSTRACT

A machine tool contour control system for directing a tool at a preselected substantially constant speed along a straight line path defined by distance components parallel to orthogonal axes. For each axis, a drive means toward the tool through a unit of distance in response to a command pulse for that axis. A generator simultaneously provides to each separate drive means a train of command pulses equal in number to the distance to be moved along the corresponding axis, the distance components being specified by binary inputs. The command pulse rates, and hence the tool speed, depend on the rate at which clock pulses are supplied to the generator. A path length compensator controls the clock pulse rate as a function of a correction factor related to the length of the straight line path. This compensator comprises appropriate decode logic, responsive to the command pulses, for setting a decrementing counter to a value related to the correction factor. A comparator and a binary counter, driven at a programmed rate directly related to the preselected speed, cooperate with the decrementing counter to provide clock pulses at a rate equal to the programmed rate times the correction factor. Another compensator further modifies the clock pulse rate depending on the position of the most significant one bit in the largest of the binary inputs bypassing the inactive bits of greater significance.

' A machine tool contour control system for directing a United States Patent [191 Tripp 1 Apr. 3, 1973 541' MACHINE TOOL CONTOUR CONTROL QibIQZQirihi line path defined a, new, clim- SYSTEM ponents parallel to orthogonal axes. For each axis, a

[75] Inventor: Robert Tripp 'Tuckahce drive means toward the tool through a unit of distance in response to a command pulse for that axis. A [73] Assignee: Inductosyn Corporation, Valhalla,

Primary Examiner Malcolm A. Morrison Assistant Examiner-Jerry Smith Attorney-William E. Beatty ABSTRACT tool at a preselected;substantially constant speed generator simultaneously provides to each separate drive means a train of command pulses equal in number to the distance to be moved along the corresponding axis, the distance components being specified by binary inputs. The command pulse rates, and hence the tool speed, depend on the rate at which clock pulses are supplied to the generator.

rection factor. Another compensator further modifies 1 the clock pulse rate depending on the position of the most significant one bit in the largest of the binary inputs bypassing the inactive bits of greater significance.

20 Claims, 15 Drawing Figures kee PeoaeAMMep 62 F660 EA 60556670 r cuA fl/ ewafqwz AND we Page 60616 FE i 5 I Fe IMMMAND jPues 5 4X E GEAf/fgi'df A y l l 5/ ma 7) we. aims. arm 7) {H6- 7 MACH/IVE woe SHEET U7UF 11 PATH-11mm ms 3,725,654 sum llUF 11 PATENTEDAPR3 ms MACHINE TOOL CONTOUR CONTROL SYSTEM BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a machine tool contour control system, and more particularly to a system for directing the motion of a machine tool at a preselected, substantially constant speed along a straight line path defined by distance components parallel to a plurality of non-coincident axes.

2. Description of the Prior Art Prior art machine tool controls for machine tool movements at constant speed typically employ apparatus for generating command pulses for each of two orthogonal axes. Those orthogonal axes are typically designated X and Y axes. For movement only along one axis, for example the X axis, no pulses are generated along the Y-axis while one pulse per unit of distance to be moved is generated for the X axis.

Similarly, for movement only along the Y axis, no X axis command pulses are generated while the desired number of Y axis pulses are generated. For movements other than along the X or along the Y axis, command pulses are generated both along the X and Y axes in proportion to the components of movement that each of the X and Y axes contribute to the resultant movement. For example, movement along an axis 45 between the X and Y axes is achieved by an equal number of X and Y axes pulses. For movement along an axis having an angle closer to the X axis than the Y axis, the number of X axis command pulses generated is greater than the number of Y axis command pulses. Similarly, for movement along an axis closer to the Y axis, the number of Y axis command pulses generated is greatest.

in the prior art, the components of movement along the X axis and along the Y axis are designated by digital .numbers. The magnitude of the resultant distance traveled is equal to the square-root of the sum of the squares of the X and Y components. The angle of movement is, of course, defined by the ratio of the X and Y components.

In additionto the digital numbers for the X and Y components, a digital number representing the rate of travel along the resultant path is typically employed. In order for the machine tool to travel at a programmed constant speed along the resultant path, independent of the direction and distance of travel, the rate of the command pulses generated for the X and Y axes must be varied as a function of the direction of travel.

Prior art systems have generally employed a source of clock pulses at a pre-programmed frequency for generating both the x axis and the Y axis command pulses. In order that the resultant speed of travel be constant regardless of the direction of travel (that is independent of the ratioof the X'and Y commanded movement) the clock frequency is modified by a correction factor proportional to the square-root of the sum of the squares of the X and Y components.

Various prior art techniques are available for performing this modification of the clock frequency. In one technique, analog representationsof the X and Y components are summed, squared and square-rooted to form a control signal for varying the frequency of a variable frequency oscillator.

Other prior art approaches employ digital techniques for summing, squaring and square-rooting the X and Y components in order to derive a correction factor. Still further, other prior art systems have employed various calculations which generate a correction factor closely approximating the square-root of the sum of the squares correction factor. For example, one approximation derives a correction factor proportional to the difference between the sum of the squares of the X and Y components with the square of the programmed rate. Other similar techniques for generating an approximate correction factor are known. While these techniques have been somewhat satisfactory, they have been slow in operation, incompatible with fully digital circuits, or expensive to implement.

In addition to the compensation factor employed for obtaining a constant resultant path rate of travel, prior art systems have employed interpolators for forming an approximately uniform distribution of the command pulses over the period during which the command motion is to be carried out. One such prior art interpolator comprises a chain of bistable elements driven by pulses of a fixed frequency. The stages of the bistable elements are inter-connected, in a manner conventional to digital counters, such that carry and non-carry pulses are generated from each stage where the carry pulses from each stage serve as the input to the next stage. By the selection of non-carry outputs from selected stages of the frequency divider, command pulses are gated onto a common line. The number of those command pulses is equal to the distance to be traveled along the respective axis and, further, they are approximately uniformly spaced over the time period of the command.

The fixed frequency supplied as an input to the interpolators of the previous paragraph are typically corrected by the length correction factor. The combination of the path length correction factor with the interpolator yields output pulses along the X and Y axes which are both evenly distributed over the command period and which result in constant machine tool motion. While combinations of path length compensators and interpolators are known, there is a need for improved devices having higher speeds, greater reliability and lower cost.

SUMMARY OF THE INVENTION In accordance with the present invention there is provided a machine tool contour control system for directing a machine tool at a preselected substantially constant speed along a contoured path approximated by a plurality of straight line segments. Each straight line segment is defined by distance components parallel to a plurality of non-coincident, herein orthogonal, axes. The system comprises separate drive means for each axis, each drive means being operative to move the tool through a unit of distance along the corresponding axis in response to a command pulse for that axis.

A command pulse generator accepts binary signals representing the distance components for each axis. In an exemplary two axis embodiment, binary signals designated AXand AY and representing distance components along respective orthogonal X- and Y- axes, are stored in respective AX and AY storage units incorporated in the command pulse generator. The command pulse generator also includes a binary counter which counts in response to computed feed rate clock pulses supplied thereto.

Appropriate comparator logic is provided in the command pulse generator which cooperates with the binary counter and with the AX storage unit to produce a train of FR): command pulses equal in number to the value of AX, and approximately uniformly spaced over the time period taken to count through M active counter stages. The comparator also cooperates with the AY storage unit and with the binary counter to produce a' train of FRy command pulses equal in number to the value of AY, and approximately uniformly spaced over the same time period as the FRx command pulses. In particular, the comparator produces an FRx or FRy command pulse each time the i" stage of the binary counter is false, the i stage being a stage which isfalse when all preceding counter stages of the lesser. significance are true, simultaneously with a bit of AX and AY corresponding to the i" stage being true.

The command pulse generator is divided into modules each having four binary counter stages, four bits ,of AX and AY storage,and a corresponding four bit comparator. Appropriate circuitry determines which of the modules containsthe first 1", that is, the binary one in either AX or AY having the greatest significance. This. module associated with four bit portions of AX and AY of significance greater than that of the "first 1 are designated inactive. The computed feed rate clock pulses automatically by-pass the inactive modules and are fed directly to the first active module. This minimizes the time taken to perform a cut of particular length. i I

To insure that the command pulses are generated at rates appropriate to cause machine tool motion at the preselected substantially constant speed V a correction factor is derived which is related to the length of the straight'line path to be followed by the tool. This correction factor then is used in a path length compensator to modify the rate at which computed feed rate clock pulses are provided to the command pulse generator.

The correction factor utilized by the path length compensator has the value 2"'/AT, where M represents the number of counter stages in the active modules of the command pulse generator, and AT represents the length of the straight line path traversed by the machine tool. The correction factor is obtained by assuming M=4, and by evaluating AT using the weighted values of three digit data groups including the first l and the two bits of next lesser significance in the largest of AX and AY, and the three bits of corresponding significance in the other of AX and AY. The correction factor so obtained then is approximated by a fraction k/8, where k is an integer less than 16.

The path length compensator includes a counter which is advanced in unison with that counter stage in the command pulse generator which enables production of the command pulses associated with the first 1." Appropriate decoding logic, responsive to the contents of this path length compensator counter and to occurrence of an FRx or FRy command pulse, provides signals to control a decrementing counter. Specifically,

the decoding logic sets the contents of the decrementing counter equal to k, and causes the decrementing counter to lock up and remain set at this value.

The path length compensator receives clock pulses at a rate directly proportional to the preselected constant speed V,. Actual rate multiplication is accomplished by using the received clock pulses to drive a binary counter, the contents of which is compared with the contents of the decrementing counter. The comparator unit provides as an output It feed rate clock pulses for each 16 pulses provided from the clock source.

The normalized correction factor used by the path length compensator results in production of feed rate clock pulses at the rate appropriate for stepping the first command pulse enabling counter stage in the command pulse generator. A position of first 1 compensator further modifies the rate at which feed rate clock pulses are'supplied to the first active module, to insure that the first command pulse enabling stage then is advanced at just the rate required to achieve machine tool motion at the preselected speed V,.

Clock pulses initially are supplied by a. feed rate clock, typically a voltage controlled oscillator, operating at a frequency related to the maximum permissible speed for the particular system. A feed rate corrector then divides this clock rate by an appropriate factor related to the programmed speed V and supplied clock pulses to the path length compensator at the resultant rate. The feed rate corrector itself may accept programmed feed rate data in the magic 3 or similar format, as specified by the'Electronic Industries Association Specification'RS-274-A.

The command pulse generator of the present invention is a digital interpolator which converts digital values, e.g. AXand AY, into 'pulse trains. The number of pulses in each cycle for the pulse trains equals the digital values. Further, those pulses are substantially evenly distributed over each cycle.

The digital interpolator includes a first counter constituted by a plurality of counting stages. The count in that first counter is stepped cyclically through a count range by clock pulses. The digital inputsreceived from a store or other source are compared with the count in the first counter. The comparator is constituted by a string of gates interconnected in a counting order. For example, a binary counting order is constituted by a string of gates serially connected, input to output, high order to low order, with at least one gate per stage of the first counter. The string of gates detects the all 1 condition of the higher order stages of the first counter. Those high order stages are compared, by a group of gates, with the digital value such as AX. The output from that group of gates is effective to gate selected ones of the clock pulses thereby forming the desired pulse'train.

BRIEF DESCRIPTION OF THE DRAWINGS Still otherobjects, features and attendant advantages of the present invention will become apparent to those skilled in the art from a reading of the following detailed description of the preferred embodiments constructed in accordance therewith, taken in conjunction with the accompanying drawings wherein like numerals designate like parts in the several figures and wherein:

FIG. 1(a) is an electrical block diagram of a machine tool contour control system in accordance with the present invention.

FIG. 1(b) depicts further details of the X-axis control, Y-axis control and contour control of FIG. 1(a).

FIG. 2 illustrates the straight line path traversed by a machine tool controlled by the system of FIG. 1, the path being defined by distance components AX and AY parallel respectively to orthogonal X- and Y-axes.

FIG. 3 is a set of waveforms illustrating the X- and Y- axis command pulses used by the system of FIG. 1(a).

FIG. 4 is a diagram illustrating stop milling of a workpiece.

module of the command pulse generator shown in FIG. 6.

FIG. 8 is a set of waveforms illustrating operation of the command pulse generator module shown in FIG. 7.

FIG. 9 is an electrical block diagram of the position of first 1" compensator and path length compensator portions of the contour control computer shown in FIG. 6.

FIG. 10 is an electrical schematic diagram-of the counter and decode logic components of the path length compensator shown in FIG. 9.

FIG. 1 1 is a set of waveforms illustrating operation of the path length compensator shown in FIGS. 9 and 10 for typical values of AX equal to binary 1100 and AY equal to binary 1010.

FIG. 12 is a set of waveforms illustrating operation of the path length compensator and the position of the first 1" compensator shown in FIG. 9 for typical values of AX equal to binary 0110 and AY equal to binary 0011.

FIG. 13 is an electrical block diagram of the programmed feed rate corrector portion of the contour control computer shown in FIG. 6.

DESCRIPTION OF THE PREFERRED EMBODIMENTS is equally applicable to systems of more than two axes.

X-Axis and Y-Axis Controls The system of FIG. 1(a) and FIG. 1(b) is used to control the motion of a machine tool 15, e.g., the cutting tool of a mill, which tool may be positioned independently and simultaneously along orthogonal X- and Y-axes. As shown in FIG. 1(b), machine tool 15 is driven parallel to the X-axis by a motor 16 cooperating with a gear box 17 and a drive shaft 18. Mechanically coupled to X-axis drive shaft 18 is a movable member 19 of a position measuring device 20. Position measuring device 20 also includes a stationary member 21 which may be fixedly mounted to the machine tool bed (not shown).

Still referring to FIG. 1(b), position measuring device 20 may be a multi-pole position measuring transformer of the type marketed under the registered trademark Inductosyn and described, for example, in U. S. Pat. No. 2,799,835. Such a position measuring transformer includes on one element, advantageously movable member 19, two windings in space quadrature of the pole cycle of the device; these windings are energized with trigonometrically related signals supplied via a pair of lines 22 and 23 from a digital to analog converter 2d. The other element of position measuring device 20, advantageously stationary member 21, may include a continuous conductor forming a multi-polar secondary winding for the device.

Position measuring device 20 provides an error signal on a line 25 depending on a comparison of the relative displacement of the inductively related elements 19 and 21 with the input of trigonometrically related signals from digital to analog converter 24. Thus, the error signal on line 25 is indicative of the position of machine tool 15 along the X-axis, as compared with a position represented by the trigonometrically related signals on lines 22 and 23- Digital to analog converter 24 may be one of the types described in applicants copending applications entitled DIGITAL-TO-ANALOG CONVERTER, Ser. No. 645,161, filed June 12, 1967; DIGITAL AND ANALOG CONVERTER, Ser. No. 854,816, filed Sept. 3, 1969; or TRIGONOMETRIC SIGNAL GENERATOR AND MACHINE CONTROL, Ser. No. 864,079, filed Oct. 6, 1969. Each of these digital-toanalog converters produces a pair of trigonometrically related analog signals of fixed relative phase and having amplitude components proportional respectively to the sine and cosine of an angle %21m/N, where N is a constant, and n is an integer between I and N.

Thus, in a typical embodiment of digital to analog converter 24 wherein N=2000, a change of l in the value of It would correspond to a change of 0.1 8 in the value of 0. This would cause the amplitudes of the trigonometrically related signals on lines 22 and 23 respectively to change by amounts proportional to the sine and cosine of 0.18". In an exemplary embodiment of position measuring device 20, one pole cycle (360 electrical degrees) corresponds to a linear distance of 0.2 inches. For such embodiment, an amplitude change proportional to sin 0.18 and cos ,0.l8 of the signals on lines 22 and 23 would require linear motion of member 19 through 0.0001 inch to null the resultant error signal.

The error signal from position measuring device 20 may be directed via control circuitry 26 to an appropriate motor control 28. When so directed, the presence of an error signal on line 25 causes motor control 28 to operate motor 16, thereby to move machine tool 15 a sufficient distance, and in an appropriate direction parallel to the X-axis, so as to reduce the error signal on line 25 to a small value. When the error signal is at a minimum, measuring device members 19 and 21 will be positioned in accordance with the value of represented by the trigonometrically related signals on lines 22 and 23.

Thus, for each FRx command pulse received along line 27, the amplitudes of the signals on lines 22 and 23 respectively will change by incremental amounts proportional to sin Zn-(l/N) and cos 21r( UN). The resulting error current-on line 25 will cause motor 16 to drive machine tool through a corresponding incremental unit of distance along the X-axis. In the example wherein 0=27r,(l/N)=0.l8, corresponding to linear motion of position. measuring device member 19 through a distance of 0.0001 inch, each FRx command pulse will cause machine tool 15 to be moved 0.0001 parallel to the X-axis.

In summary, the above described components 16 through 28 comprise a drive means 30 which is operative to move machine tool 15 through a unit of distance parallel to the X-axis in response to an FRx command pulse for that axis. Similarly, for the Y-axis, a separate drive means 31 comprises components 16' through 26 which are identical-in function and operation to the unprimed, like-numbered components in X-axis drive means 30. Thus, Y-axis drive means 31 is operative to move machine tool 15 through a unit of distance parallel to the Y-axis in response to an FRy command pulse for that axis supplied along a line 32.

Still referring to FIG. 1(b), in a mode of operation described in detail in applicant's copending application entitled POSITION MEASURING SYSTEM, Ser. No. 809,533, filed Mar. 24, 1969, the error signal from position measuring device may be used in cooperation with digital-to-analog converter24 to change the production of the trigonometrically related signals supplied to measuring device number 19. In such a mode of operation, a digital signal is developed in digital-toanalog converter 24 which is representative of the position of machine tool 15 along the X-axis, within one cycle of position measuring device 20.

By use of appropriate external control circuitry 35 cooperating with circuitry 26 and converter 24, the X- axis position of machine tool 15, as measured with respect to a reference part-start position, may be determined and visually indicated ona display 36. A set of manually operated switches 37 is provided for input of the reference part-start position. For the Y-axis, external control circuitry 35-, display 36 and part-start position switches 37 are identical in function to the corresponding X-axis components 35, 36, and 37.

The X-axis control 66 of FIG. 1(b) also includes a A register 38 adapted to store a digital signal, herein designated AX, representing the distance machine tool 15 is to be moved parallel to the X-axis. Similarly, there is provided another A register 39 in Y-axis control 67 .adapted to store a digital representation, herein mented by FRx command pulses supplied on line 27. Similarly, A register 39 may store a sign bit, supplied to circuitry 26 via a line 34', which controls the direction of machine tool motion parallel to the Y-axis resultant upon occurrence of an FRy command pulse on line 32.

Data Inputs Referring to FIG. 1(a), the values AX and AY for each cut cycle or segment of machine tool motion may be pre-recorded on a punched or magnetic tape (not shown) which is read by a tape reader 40. This AX and AY information then may be directed to A registers 38 and 39, via a data distributor 41, over a pair of lines 42 and 43. Alternatively, 'AX and AY information may be provided via other data inputs 44, for example, from a digital computer (not shown).

In an alternative embodiment, the input data from tape reader 40 or other data inputs 44 may specify the initial and end positions of each cut segment. In this instance, external control circuitry 35 and 35 in FIG. 1(b) may determine the values of AX and AY and provide appropriate signals along lines 45 and 46 to load A registers 38 and 39 accordingly. In such-embodiment, each of A registers 38 and 39 may comprise a binary counter or a binary shift register. Typical apparatus for determining the values of AX and AY from initial and end position data is set forth in applicant's copending U. S. application entitled POSITION CONTROL SYSTEM, Ser. No. 814,670, filed Apr. 9, I969.

Contour vControl Computer Referring to FIG. 1(a), the machine tool control system also includes, as part of a contour control computer 50, a command pulse generator (interpolator) 51 which receives computed feed rate clock pulses on a line 52 see FIG. 1(b). In general, command pulse generator 51 accepts AX information from A register 38 (FIG. 1(b)) in X-axis control 66 along a line 53 and provides on line 27 a train of FRx command pulses, the number of FR): pulses being equal to the number of incremental distance units which machine tool 15 is to be moved parallel to the X-axis. The FRx pulses are approximately uniformly spaced over a time period t. Similarly, command pulse generator 51 accepts AY information from A register 39 in Y-axis control 67 along a line 54 and provides on line 32 a train of FRy command pulses, the number of FRy pulses being equal to the number of incremental distance units which machine tool 15 is to be moved parallel to the'Y-axis. The FRy pulses are approximately uniformly spaced over the same time period t.

By spacing the FRx and FRy command pulses over the same time period 1, straight line motion of machine tool 15 is achieved. That this is so may be understood in conjunction with FIGS. 2 and 3. Referring first to FIG. 2, there is shown a simplified diagram illustrating a desired cut made between twopoints P1 and P2, in a plane defined by X- and Y-axes. If the initial point P1 is situated at location (X1, Y1), and the end point P2 at position (X2, Y2), then to insure that machine tool 15 cuts along a straight line path from P1 to P2, tool 15 must be moved simultaneously through a distance AX =(X2-Xl) parallel to the X axis, and through a distance AY=( Y2Y 1) parallel to the Y axis. That is, motion parallel to the X- and Y-axes must be coordinated so that the distance AX along the X-axis is traversed in the same time t taken to traverse the distance AY along the Y-axis. Note that in general, to achieve straight line motion from P1 to P2, the velocity Vx=AX I t will be different from the velocity Vy=A Y/t.

Drive means 30 and 31 (FIG. 1(b)) areoperative to move'machine tool 15 through a unit of distance parallel to the X- and Y-axes, respectively, in response to a command pulse for that axis. Thus, if the command pulse trains FRx and FRy are approximately uniformly spaced over the same period of time t, then machine tool 15 will be moved through AX and through AY in approximately the same period of time, thereby accomplishing the desired straight line motion between points P1 and P2 (FIG. 2).

The approximately uniform spacing of the PR): and FRy command pulses produced by command pulse generator 51 is illustrated in FIG. 3. In that figure, waveform 55 represents a train of feed rate clock pulses supplied to command pulse generator 51 along line 52 at a uniform rate of 16 pulses per time t. By way of example, AX represents in binary form a distance of units, while AY represents in binary form a distance of 3 units. Waveform 56 illustrates that 10 approximately uniformly spaced FRx pulses will be generated on line 27 in time t. In the same period of time,'three approximately uniformly space FRy pulses, illustrated by waveform 57, will be generated on line 32.

From the foregoing description, it should be apparent that if feed rate clock pulses are supplied at a constant rate on line 52, the speed of machine tool along the straight line path from P1 to P2 (FIG. 2) will differ depending on theYesulta nt path length AT VAX +AY That is, the tool speed will differ depending on the particular values of AX and AY. For most applications, it is desirable to have a machine tool 15 move at an approximately constant speed along the resultant path regardless of the slope of length of that path. Contour control computer 50 functions to achieve such constant tool speed regardless of the resultant tool path length AT by adjusting the rate at which feed rate clock pulses are supplied to command pulse generator 51 which in turn adjusts the rate of FRx and FRy pulses supplied to the X-axis control 66 and Y-axis control 67, respectively.

Recall that machine tool 15 is moved through distance AX and AY, parallel respectively to the X- and Y-axes, in the same period of time t. Thus the speed V, along the resultant path AT from P1 to P2 is given by the equation:

V, =(AT/t)=( V AX+ AYlt) 1 Since AT is defined for each cut to be made, the time t for performing the cut must be changed in proportion to the resultant distance AT to insure that V, is constant. Referring again to FIG. 3, it is apparent that the time period t may be changed by correspondingly altering the rate at which computed feed rate clock pulses a are supplied to command pulse generator 51. This is accomplished by contour control computer 50.

As will be described in detail below, the number of feed rate clock pulses required to complete a cut cycle (i.e., a move from point P1 to point P2) depends on the number of active stages of a binary counter (counter 99 in FIG. 7) in command pulse generator 51. If M stages are active, 2 pulses are required to complete such a cut cycle. In the example of FIG. 3, four binary counter stages are active in command pulse generator 51, thus 2=2 l6 pulses are required to complete a cut cycle. The rate at which the 2' computed feed rate clock pulses are supplied determines the time period t.

From equation (1) above, it is evident that the time period 1 required to achieve motion of machine tool 15 at constant speed V, is given by:

:= AT/ V, 2

Thus, the computed feed rate clock pulses preferably should be supplied at a rate R given by:

R=2 pulseslt= [(2 pulses) (V,)/AT] (3) where V, is the desired preselected constant tool speed. Thus, if feed rate pulses are supplied to command pulse generator 51 at a rate R defined by equation (3) above, the resultant motion of machine tool 15 will be at the desired constant speed V, regardless of the length AT or slope of the resultant path. The factor 2/AT may be considered a correction factor useful for controlling the rate at which computed feed rate clock pulses are supplied to command pulse generator 51. In contour control computer 50, a corresponding correction factor is derived by analysis of the command pulses FRx and FRy produced by generator 51; this correction factor is used to control the rate of the feed rate clock pulses on line 52.

To supply computed feed rate clock pulses at the appropriate rate, contour control computer 50 (FIGS. 1(a) and 1(b) includes a feed rate clock 58 which provides a train of clock pulses along a line 59 at a constant rate related to the maximum tool speed permitted by the system. A programmed feed rate corrector 60, described in detail hereinbelow in conjunction with FIG. 13, initially modifies the rate of the pulses from clock 58 in accordance with programmed feed rate information received on a line 61. This programmed feed rate information is provided to the system from tape reader 40 or other data inputs 44, via data distributor 41, and may be in the format specified by the Electronic Industries Association (EIA) Standard RS-274- A.

The rate of the clock pulses provided on a line 62 from programmed feed rate corrector 60 further is modified by a path length compensator 63 and a position of first 1" compensator 64 both described in detail hereinbelow in conjunction with FIGS. 9 through 12. Compensators 63 and 64 function to establish the rate of the computed feed rate pulses on line 52 in accordance with the resultant path length AT, so that the FRx and FRy pulses produced by command pulse generator 51 are at a rate appropriate to cause motion of machine tool 15 at a preselected substantially constant speed V,.

A manual override control 65 cooperates with feed rate clock 58 to permit operator control of the speed of machine tool 15, overriding the programmed feed rate information supplied from data distributor 41. Such manual override is of value, for example, when the performance characteristics of the tool actually in use are such that operation at the programmed speed would cause damage to the tool. Conversely, a particular tool may cut most efficiently at a speed higher than that programmed; the operator can provide such higher speed operation by use of manual override control 65.

Stop Milling and Go Milling The contour control system of FIG. 1(a) and 1(b) will facilitate machine tool operation in either the stop milling or go milling" mode of operation. In stop milling the cutting tool is stopped after performing each straight line cut, prior to executing a turn, so that a minimum over-cutting of material results. An example of this type of milling is shown in FIG. 4. In this figure, a workpiece 68 is being milled by a cutting tool 15'; the operation involves three consecutive straight line cuts, with the machine tool being stopped between each cut. Thus the initial cut is parallel to the X-axis and terminates at point P3, at which point tool 15' is stopped prior to continuing along the new path from point P3 to point P4 parallel to the Y-axis. Tool 15' again is stopped at point P4 prior to continuing on the final, sloping path toward point P5.

' Go milling is most applicable to milling operations which require the cutting of continuous curves such as that illustrated in FIG. 5. In this illustration, a machine tool 15" is being used to mill a curved opening in a workpiece 69. Under control of the system of FIG. 1(a) and 1(b), such 'a curve is approximated by a series of straight line segments, as illustrated in FIG. 5a. I-Iere, curve 70 is approximated by straight line segments 71a extending from point P6 to point P7, 71!; extending from P7 to P8, and 710 extending from P8 to P9. The

length of each of these straight line segments 71a, 71b,

71c depends on the required tolerance of the finished part. The higher the accuracy, the smaller the straight line increments required, especially at that portion of the curve where the rate of change per linear distance is highest. To insure a smooth continuity between the programmed increments, it is necessary to keep machine tool in motion until milling of the curve has been completed; the tool is not stopped after each straight line out segment.

During either stop or go milling operation, command pulse generator 51 (FIG. 1(b)) produces a cycle complete" signal on a line 72 when production of the command pulses for each straight line cut segment has been completed. This cycle complete signal, which is typifiedby waveform'73 in FIG. 3, is used to control the transfer of AX and AY data from A registers 38 and 39, and to reset command pulse generator 51 and compensators 63 and 64.

For stop milling" operation, the AX and AY values for the straight line cut segment being performed may be maintained in A registers38 and 39 during performance of the cut. The cycle complete signal then may be used to initiate advance of tape reader 40 and to load the AX and AY data' for the next cut segment first into A registers 38 and 39 and thence into command pulse generator 51. During this tape reader advance and data transfer, no command pulses are produced, and machine tool 15 is at rest; production of FR]: and FRy pulses for the next cut segment is initiated after completion of the data transferl For go milling operation, as soon ascommand pulse generator 51 has completed providing the FRx and FRy pulses for one straight line out segment, it immediately begins to produce the command pulses for the next seccessive straight line out segment. In this mode of operation, while one cut segment is being performed, tape reader 40 advances and A registers 38 and .39 are loaded with-the AX and AY data for'the next cut segment. Occurrence of the cyclecomplete" signal causes the new values of AX and AY to be transferred into command pulse generator 51 in place of the AX and AY values for the cut segment just completed. The cycle complete signal also resets command pulse generator 51 and immediately initiates generation of the next set of command pulses.

Referring now to FIG. 1(b), in the embodiment illustrated, A register 38 comprises twenty binary storage positions, a typical one being designated 38i, adapted to store a -bit binary signal representing AX. The bits stored in A register 38 run from the lease significant (2) designated 38a to the most significant (2 designated 38n. Similarly, A register 39 comprises 20 storage positions, a typical one designated 39i, for storing a 20-bit binary signal representing AY. In A register 39, the least significant (2) storage position is identified 39a and the most significant (2") storage position is identified 39n.

The number of storage positions in A registers 38 and 39 is related to the maximum permissible length of a single straight cut segment performed by machine tool 15. For example, in a system wherein each FRx command pulse results in motion of machine tool 15 through a distanceincrement of 0.0001 inch parallel the X-axis, a A register 38 having 20 binary storage positions 381' is capable of storing a AX signal havinga value between 0 and (2 -l), representing an X-axis cut length component between 0 and approximately 105 inches. Similarly, a A register 39 having 20 binary storage positions 391' is capable of storing AY signals representing distances between 0 and (2-l) incremental units of distance.

Command Pulse Generator (Interpolator) Command pulse generator 51,.in the embodiment of FIG. 6, is divided into five identical modules 76a, 76b, 76c, 76d and 76e. One such module is described in detail hereinbelow in conjunction with FIGS. 7 and 8. In FIG. 7, a typical module contains a four bit AX storage unit 77, a four bit. AY storage unit 78, and a counter and comparator unit 79. In FIG. 6, the AX storage units associated with modules 76a-76e respectively are designated 77a-77e. Similarly, the AY storage units associated with modules 76a-76e respectively are designated 78a-78e and the counter and comparator units associated with modules 76a-76e respectively are designated 79a-79e. In FIG. 7, each of the units 77 78 and 79 correspond to each of like-numbered units of FIG. 6 for each of the postscripts a through e.

Each of counter and comparator units 79a-79e (FIG.

6 functions to provide on a corresponding one of lines 80a-80 a number of command pulses determined by the contents of the corresponding AX storage unit 77a-77. An OR gate 81 receives as inputs each of the lines 80a-80e and provides as an output on line 27 the FRx command pulses used to direct operation of X-axis drive means 30, FIG. 1(b). Similarly, each of counter and comparator units 79a-79e functions to provide on a corresponding one of lines 82a-82e a number of command pulses determined by the content of the cor responding AY storage unit 78a-78e. An OR gate 83 combines the outputs on each of lines 82a-82e and provides as an output on line 32 the FRy command pulses I used to direct operation of Y-axis drive means 31, FIG. 1(b).

For a particular cut segment, the AX and AY cut length components both may be considerably shorter than the maximum length permitted by the storage capacity of A registers 38 and 39. In such case many high order storage positions in both of A registers 38 and 39 will contain only binary bits. In such instance, it is unnecessary for all of modules 76a76e to be active. Accordingly, command pulse generator 51 includes means (described in conjunction with FIG. 7 below) for determining which one of modules 76a-76e is associated with the first I, that is, with the most significant l bit in either of the AX and AY representations. This one module, herein called the first active module, then receives the computed feed rate clock pulses supplied on line 52. All command pulse generator 51 modules of greater significance than the first active module are inactive; the computed feed rate clock pulses automatically by-pass these inactive modules.

To illustrate the zero by-pass" operation of com- EXAMPLE I W first 1" 1 X=0O00 0000 0000: 110

i 0 1000=200 FRx command pulses=.02 in.

l 0 0100=100 FRu command pulses=.0l in.

1. Three 1 digit group In this example, AX is larger than AY, and the most significant 1 bit in AX (i.e., the first I) has the significance 2. Thus, referring to FIG. 1(b), the first I will be supplied via the 2' storage position 38j of A register 38. Similarly, the most significant 1 bit in AY has the significance 2, and hence will be supplied via the 2 storage position 39b of A register 39. As a result, in A register 38 all storage positions having significance greater than 2" (that is, the storage positions of significance 2 through 2"), will contain only 0 bits. Similarly, the storage positions of significance 2 through 2" in A register 39 will contain only 0 bits. Accordingly, with reference to FIG. 6, for Example I, module 76d of command pulse generator 51 is the first active module and modules 76a, 76b, and 76c all are inactive. In this case, computed feed rate clock pulses supplied on line 52 by-pass modules 76a, 76b, and 76c and are fed directly to first active module 76d.

Typical Command Pulse Generator Module Referring now to FIG. 7 there is shown an electrical block diagram of typical module 76 of command pulse generator 51. Typical module 76 includes a counter and comparator 79, aAX storage unit 77 and a AY storage unit 78. Each of modules 76a-76e (FIG. 6) is identical to module 76 shown in FIG. 7., differing only with respect to which bits of the AX and AY representations (from registers 38 and 39 of FIG. 1(b)) are received by the module. Thus, e.g., should module 76 (FIG. 7) correspond to module 76d of FIG. 6, the four bits of AX-information having significance 2 through 2' would be supplied to AX storage unit 77d via a channel 84d from the corresponding four storage positions 38j of A register 38 of FIG. 1(b). Similarly, the four bits of AY information having significance 2 through 2 would be supplied to the AY storage unit 78d via a channel d from the corresponding four storage positions 39(b) ofA register 39 of FIG. 1(b).

Each AX storage unit 77 (FIG. 7) itself comprises four binary storage positions 77p, 77q, 77r and 77s, each of which may comprise a flip-flop having Q and Q outputs. Note that position 77p contains the least significant AX bit stored by unit 77. Thus, e.g., in module 76d storage position 77p would store the 2 bit of AX, while storage position 77s would store the 2 bit of AX. Note that the four storage positions 77p through 77s store binary bits having weighted values. The bit stored in position 77p has a significance (2), 77; a significance 2 77r a significance 2, and 77s a significance 2 Similarly, AY storage unit 78 comprises four binary storage positions 78p-78s containing bits having weighted values. In module 76d, positions 78p through 78s store the AY bits having significances 2 through 2", respectively.

As shown in FIG. 7, a NAND gate 86 provides a latch signal on line 98 to AX storage unit 77 upon occurrence of a cycle complete signal on line 72. Similarly, a NAND gate 87 provides a corresponding latch signal on line 97 to AY storage unit 78. These latch signals from NAND gates 86 and 87 cause the data stored in A registers 38 and 39 respectively to replace the old values of AX and AY previously stored in storage units 77 and 78 with the values appearing on lines 84 and 85, respectively. In this manner, new AX and AY values are transferred to contour control computer 50 (FIG. l(b)) prior to the initiation of each cut cycle.

Referring still to FIG. 7, a pair of NAND gates 88 and 89 are used to recognize whether any one bits are stored in AX storage unit 77 or AY storage unit 78. To accomplish this, thefi outputs of the eight storage positions 77p-77s and 78p-78s comprise the inputs to eight-input NAND gate 88. Since the d output of a particular storage position will be true only if a binary zero is stored in that position, all inputs in NAND gate 88 will be true, and hence the output of NAND gate 88 will be false, only if all storage positions 77p-77s and 78p-78 contain binary zeros. The output of NAND gate 88 is inverted by NAND gate 89, thereby supplying on a line 90 a signal which is true only if there are no binary ones stored in either AX storage unit 77 or AY storage unit 78. In a system controlling tool motion along more than two axes, line 90 would be connected to a corresponding one bit recognition circuit (not shown) for another axes.

Counter and comparator 79 includes an active in terminal 91 which receives an active signal from the preceding command pulse generator 51 module (i.e. the module of next higher significance in the modules of the group 76a to 76e). In the example where FIG. 7 represents module 76d, the next higher module is module 76c. This active" signal is true only if the preceding module is active; otherwise, the active signal is false. The active in terminal 91a of module 760 always is false.

The active signal received at terminal 91 (see FIG. 7) is inverted by a NAND gate 92, to provide via a line 93 a first input to a NAND gate 94. NAND gate 94 also receives as an input the signal on line 90. Since the binary ones are contained in AX and AY storage units 77 and 78, the output of NAND gate 94 on a line 95 will be false only if the module shown itself is inactive. If the previous module of the group 76a to 7 6e is active, or if the previous module is inactive but at least one binary one is contained in AX storage unit 77 or AY storage unit 78 (i.e., if the illustrated module if the first active module), the output of NAND gate 94 will be true. Thus, the output of NAND gate 94, on a line 95, comprises the active signal which is fed to the tively, corresponding to'line 95 of FIG. 6. Module 76d will provide a true active signal to the active in terminal 91e of module 762. A true active signal is produced by module 76e, but being the last module, there is no subsequent module to receive this signal and therefore that signal is not employed.

Still referring to FIG. 7, each counter and comparator unit 79 contains a binary counter 99 having four stages 99a, 99b, 99c and 99d, in order of increasing significance. Typically, counter 99 is advanced by the negative-going transition of count pulses supplied on a line 100 from a logic circuit 101. Thus, stage 99a changes state once for each count pulse on line 100, stage 99b changes stage once for each two count pulses on line 100, stage 99c changes state once for each four count pulses on line 100, and stage 99d changes state once for each eight count pulses on line 100. Correspondingly, stages 99a-99d are identified in FIG. 7 by the weighted values 1,"2," 4, and 8, respectively. Counter 99 may be reset to zero by a clear signal supplied on a line 102, as shown in- FIGS. 6 and 9, which is derived from the position of first 1 compensator 64 (FIG. 9), by inverting the cycle complete line 72 from the module 76e (FIG. 6) all 1 out line 142e.

The source of count pulses on line 100 in a particular module of command pulse generator 51 depends on whether or not it is the first active module of the group 76a to 76e. In the first active module of that group,

' counter 99 receives computed feed rate pulses provided via line 52 from FIG. 16. If the preceding module also is active, counter 99 receives as count pulses the carry pulses from the preceding module at terminal 108. If the module is inactive, counter 99 receives no count pulses. The source of count pulses on line 100 is controlled by logic circuitry 101 in response to the state of the inverted active in signal on line 93 and the state of the "active out" signal on line 95 of the module containing counter 99.

Referring to FIG. 7, if the module illustrated is the first active module, the active in" signal received at terminal 91 will be false, hence the signal on line 93 will be true. Moreover, the signal on line 90 will be true, since at least one binary 1 (i.e. the first 1) will be present in either AX storage unit 77 or AY storage unit.

78. In this instance, the active out" signal on line also will be true. Since the signals on lines 93 and 95 provide inputs to NAND gate 103 in logic circuitry 101, the output of NAND gate 103 will be false. This false output provides an input to a NAND gate 104, thus the output of NAND gate 104 will be true regardless of the true or false level of the other input to NAND gate 104 from terminal 108, thereby providing a true or enabling input to a NAND gate 105, the output of which is connected to line 100. The false output from NAND gate 103 is inverted by a NAND gate 106 to provide a true or enabling input to a NAND gate 107. NAND gate 107 also receives as an input the computed feed rate clock pulses supplied via line 52. The feed rate clock pulses are inverted a first time by enabled NAND gate 107, and again inverted by enabled NAND gate 105. Thus, the computed feed rate clock pulses supplied via line 52 are provided on line to counter 99.

In modules which are inactive, the signal on line 95 is false, hence causing the output of NAND gate 103 to remain true and the output of NAND gate 106 to remain false. The false output of NAND gate 106 inhibits NAND gate 107 from supplying feed rate clock pulses to NAND gate 105. Although the true output of NAND gate 103 enables NAND gate 104, no carry pulses are received from the preceding module (which also is inactive), hence no count pulses are supplied to NAND gate or to counter 99.

Waveforms illustrating operation of counter 99 are shown in FIG. 8. Referring thereto, waveform 111 represents the feed rate clock pulses present on line 52 and hence on line 100 of the first active module of command pulse generator 51. NOte that the feed rate clock pulses shown in waveform 111 occur at a constant rate and have not been corrected in rate to compensate for the resultant path length of the cut being produced; the pulses are shown in this form in FIG; 8 to simplify the operational description of the module 76 shown in FIG. 7. Rate correction of the computed feed rate clock pulses is discussed in detail hereinbelow in conjunction with FIGS. 9-13.

Waveforms 112, 113, 114 and 115 (FIG. 8) respectively represent the states of stages 99a, 99b, 99c and 99d of counter 99 (FIG. 7). In the embodiment illustrated, counter stage 99a changes state upon occurrence of each negative going transition of the feed rate clock pulses (waveform 111). Similarly, each succeeding counter stage changes state upon occurrence of a negative-going transition of the preceding state. The carry out signal provided by module 76 on a line 116 (FIG. 7) corresponds to the state of stage 99d and thus also is illustrated by waveform 115. Note that the negative-going transition of this "carry out signal (waveform 116) occurs at the trailing edge of the 16th- 

1. A machine tool control system for commanding component movements along first and second orthogonal axes to cause machine tool movement at a resultant rate, for a resultant distance and in a resultant direction, including a first digital means having a count contained in a plurality of active bits for specifying the component of movement along said first axis, second digiTal means having a count contained in a plurality of active bits for specifying the component of movement along said second axis, and third means generating a programmed signal at a first rate and including generator means operated by a control signal and in response to said first digital means for generating a number of command pulses representing the distance to be traveled along said first axis and in response to said second digital means for generating a number of command pulses representing the distance to be traveled along said second axis, the improvement comprising, control means for generating said control signal so as to cause said generator means to generate command pulses at a rate altered by a correction factor so as to render said resultant rate substantially a constant independent of the counts in said first and second digital means, said correction factor being related to the length of a straight line path to be followed by the tool, said control means including compensator means responsive to said command pulses and to at least some of said active bits for generating said correction factor.
 2. A machine tool control system for commanding component movements along first and second orthogonal axes to cause machine tool movement at a resultant rate, for a resultant distance and in a resultant direction, including a first digital means having a count contained in a plurality of active bits for specifying the component of movement along said first axis, second digital means having a count contained in a plurality of active bits for specifying the component of movement along said second axis, and third means generating a programmed signal at a first rate and including generator means operated by a control signal and in response to said first digital means for generating a number of command pulses representing the distance to be traveled along said first axis and in response to said second digital means for generating a number of command pulses representing the distance to be traveled along said second axis, the improvement comprising, control means for generating said control signal so as to cause said generator means to generate command pulses at a rate altered by a correction factor so as to render said resultant rate substantially a constant independent of the counts in said first and second digital means, said control means including compensator means responsive to said command pulses and to at least some of said active bits for generating said correction factor, wherein said compensator means includes, a first binary counter having N bits and operative to be stepped by said programmed signal, a second counter having N bits for storing a binary number K, a comparator connected to said first and second counters for generating an output, to form said control signal, each time the count in said first counter equals the value K stored in said second counter whereby said correction factor is proportional to K/N and said control signal has a rate K/N times said first rate.
 3. The control system of claim 2 wherein said compensator means further includes, a decoder responsive to groups of high order active bits from each of said first and second digital means to produce a decoded value of K approximately equal to the square-root of the sum of the squares of the weighted values of said groups, and means for loading the decoded value of K into said second counter.
 4. The control system of claim 3 wherein said first and said second digital means are organized in blocks of a plurality of ordered bits and wherein the size of said groups is at least three bits, said compensator means further including, a ''''first 1'''' compensator for detecting the location of the highest order 1 within a block and means for multiplying said control signal by a factor ( 1/2 )i where ''''i'''' is a number designating the location of the highest order 1 within the block.
 5. A machine tool cOntour control system for directing a tool at a preselected substantially constant speed along a resultant path defined by distance components parallel to orthogonal axes, said system comprising: a source of clock pulses, a first binary counter of M stages advanced by pulses from said source, a first register having M storage positions and adapted to store a first binary representation of a distance component parallel to a first of said orthogonal axes, a second register having M storage positions and adapted to store a binary representation of a distance component parallel to a second of said orthogonal axes, first comparator means cooperating with said first binary counter and with said first and second registers for producing first and second trains of command pulses, said first train having a number of pulses equal to the value of said first binary representation, said second train having a number of pulses equal to the value of said second binary representation, the pulses of said first and second trains being approximately uniformly spaced over the same period of time, first drive means operative to move said tool through a unit of distance parallel to said first axis in response to a command pulse of said first train, second drive means operative to move said tool through a unit of distance parallel to said first axis in response to a command pulse of said second train, and compensator means for determining from said command pulses the approximate values of said first and second binary representations and for modifying the rate of said clock pulses in response to said determined approximate values so that the resultant command pulses will occur at a rate causing tool motion at said preselected speed regardless of the length or slope of said resultant path, said compensator means for modifying the rate of said clock pulses including means for modifying said clock pulses in accordance with a correction factor related to the length of the straight line path to be followed by the tool.
 6. A machine tool contour control system for directing a tool at a preselected substantially constant speed along a resultant path defined by distance components parallel to orthogonal axes, said system comprising: a source of clock pulses, a first binary counter of M stages advanced by pulses from said source, a first register having M storage positions and adapted to store a first binary representation of a distance component parallel to a first of said orthogonal axes, a second register having M storage positions and adapted to store a binary representation of a distance components parallel to a second of said orthogonal axes, first comparator means cooperating with said first binary counter and with said first and second registers for producing first and second trains of command pulses, said first train having a number of pulses equal to the value of said first binary representation, said second train having a number of pulses equal to the value of said second binary representation, the pulses of said first and second trains being approximately uniformly spaced over the same period of time, first drive means operative to move said tool through a unit of distance parallel to said first axis in response to a command pulse of said first train, second drive means operative to move said tool through a unit of distance parallel to said second axis in response to a command pulse of said second train, and compensator means for determining from said command pulses the approximate values of said first and second binary representations and for modifying the rate of said clock pulses in response to said determined approximate values so that the resultant command pulses will occur at a rate causing tool motion at said preselected speed regardless of the length or slope of said resultant path, wherein said comparator means comprises: means for providing a command pulse of said first train whenever the ith stage oF said first binary counter is false and all preceding stages of lesser significance are true and when the ith bit, as counted from the first register storage position of most significance, of said first binary representation is true, and means for providing a command pulse of said second train whenever the ith stage of said first binary counter is false and all preceding stages of lesser significance are true and when the ith bit, as counted from the second register storage position of most significance, of said second binary representation is true, and wherein i is an integer between 1 and M.
 7. A contour control system according to claim 6 wherein command pulses of said first and second trains are gated by said clock pulses.
 8. A contour control system according to claim 6 wherein said compensator means comprises: first means for ascertaining the position j of the most significant ''''1 bit in the largest of said first and second binary representations, j being an integer between 1 and M, said position j being counted from the storage position of most significance in the register storing said largest representation, and second means for modifying said clock pulse rate in response to the contents of the j, j+ 1 and j+ 2 storage positions of said first and second registers, said contents being determined from said command pulses.
 9. A contour control system according to claim 8 wherein said first means comprises: a second binary counter advanced by said clock pulses, and inhibit means for stopping said second binary counter upon occurrence of the initial command pulse from said comparator means.
 10. A contour control system according to claim 8 wherein said second means comprises: storage means for storing the jth bit of said first binary representation and the jth bit of said second binary representation, said jth bits being determined from said command pulses.
 11. A contour control system according to claim 10 wherein said storage means comprises first and second flip-flops, said first flip-flop being set if the initial command pulse from said comparator means is in said first train, said second flip-flop being set if said initial command pulse is in said second train, both of said flip-flops being set if initial command pulses occur simultaneously in both said first and second trains.
 12. A contour control system according to claim 10 wherein said second means further comprises: a third binary counter advanced at the same rate as the jth stage of said first binary counter, decode means, responsive to the contents of said storage means, to said command pulses and to the contents of said third binary counter, for providing control signals for reducing the rate of said clock pulses.
 13. A contour control system according to claim 12 wherein said second means further comprises: a fourth binary counter of K stages repetitively cycled in response to clock pulses from said source, a decrementing counter having contents established by said control signals, and second comparator means cooperating with said fourth binary counter and said decrementing counter for providing an output of k pulses for each 2k clock pulses received by said fourth binary counter, where k corresponds to the contents of said decrementing counter.
 14. A contour control system according to claim 13 wherein K 4, wherein k is approximately equal to 16 divided by the length of said resultant path, wherein binary ''''1 bits in the J, j+1 and j+2 bit positions of said first or second binary representations respectively are assigned the weighted values 8, 4 and 2, and wherein the length of said resultant path is approximated by summing the weighted values of said j, j+1 and j+2 bits of said first binary representation, summing the weighted values of said j, j+1 and j+2 bits of said secondary binary representation, and determining the square root of the sum of the squares of said summed weighted values.
 15. A contour control system according to claim 14 wherein said compensator means further comprises: position compensating means, cooperating with said first means and said second means, for providing clock pulses to the jth stage of said first binary counter, as counted from the stage of least significance, at a rate equal to k times said preselected constant speed.
 16. A contour control system according to claim 15 wherein said first binary counter is divided into modules of four stages each, wherein said jth stage corresponds to the mth stage of one of said modules, m being an integer between 1 and 4, and wherein said position compensating means comprises means for providing clock pulses from said second comparator means to the module containing said jth stage at a rate equal to k times said preselected constant speed times 2(m 1).
 17. A contour control system according to claim 16 wherein said second comparator means receives pulses at a clock rate equal to 16 times said preselected constant speed, wherein output pulses from said second comparator means are at a rate equal to 8k times said preselected constant speed, and wherein said position compensating means comprises means for dividing pulses received from said second compensator means by 2(4 m).
 18. A contour control system according to claim 17 wherein said source of clock pulses comprises: oscillator means for producing a train of clock pulses, and rate modifier means, cooperating with said oscillator means and with a digital input specifying said preselected constant speed, for providing clock pulses to said fourth binary counter at a rate equal to 16 times said preselected constant speed.
 19. A contour control system according to claim 17 wherein said position compensating means comprises: a second binary counter advanced by said clock pulses, means for inhibiting advance of said second binary counter upon occurrence of the initial command pulse from said first comparator means, the contents of said second binary counter then corresponding to m, a fifth binary counter repetitively cycled in response to output pulses from said second comparator means, and third comparator means cooperating with said second and fifth binary counters, for providing an output of m pulses for each eight pulses received by said fifth binary counter, the output pulses from said third comparator means being provided to said module containing said jth stage.
 20. A contour control system according to claim 6 further comprising: means for providing a ''''cycle complete'''' signal when all active stages of said first binary counter are true, and means responsive to said ''''cycle complete'''' signal for entering a new set of binary representations into said first and second registers, for resetting said first binary counter and said means for comparing, and for initiating generation of the command pulses corresponding to said new set of binary representations. 